Methods for determining environmental parameter data of a real object in an image

ABSTRACT

Example systems and methods for virtual visualization of a three-dimensional (3D) model of an object in a two-dimensional (2D) environment. The method may include capturing the 2D environment and adding scale and perspective to the 2D environment. Further, a user may select intersection points on a ground plane of the 2D environment to form walls, thereby converting the 2D environment into a 3D space. The user may further add 3D models of objects on the wall plane such that the objects may remain flush with the wall plane.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 15/948,901 entitled “Method for Forming Walls to Align 3DObjects in 2D Environment” filed on Apr. 9, 2018, which is acontinuation of U.S. patent application Ser. No. 14/710,557 entitled“Method for Forming Walls to Align 3D Objects in 2D Environment” filedon May 12, 2015. U.S. patent application Ser. No. 14/710,557 claimspriority to U.S. Provisional Patent Application No. 61/992,759 entitled“METHOD FOR FORMING WALLS TO ALIGN 3D OBJECTS IN 2D ENVIRONMENT”, filedon May 13, 2014. U.S. patent application Ser. No. 14/710,557 also claimspriority to U.S. Provisional Patent Application No. 61/992,629 entitled“METHOD FOR PROVIDING SCALE TO ALIGN 3D OBJECTS IN 2D ENVIRONMENT”,filed on May 13, 2014. U.S. patent application Ser. No. 14/710,557claims further priority to U.S. Provisional Patent Application No.61/992,719 entitled “METHOD FOR PROVIDING A PROJECTION TO ALIGN 3DOBJECTS IN 2D ENVIRONMENT”, filed May 13, 2014. U.S. patent applicationSer. No. 14/710,557 claims further priority to U.S. Provisional PatentApplication No. 61/992,774 entitled “METHOD FOR MOVING AND ALIGNING 3DOBJECTS IN A PLANE WITHIN THE 2D ENVIRONMENT”, filed May 13, 2014. U.S.patent application Ser. No. 14/710,557 claims further priority to U.S.Provisional Patent Application No. 61/992,746 entitled “METHOD FORREPLACING 3D OBJECTS IN 2D ENVIRONMENT”, filed May 13, 2014. U.S. patentapplication Ser. No. 14/710,557 claims further priority to U.S.Provisional Patent Application No. 61/992,665 entitled “METHOD FORINTERACTIVE CATALOG FOR 3D OBJECTS WITHIN THE 2D ENVIRONMENT”, filed May13, 2014. The entire contents of each of the above-listed applicationsare hereby incorporated by reference for all purposes.

BACKGROUND AND SUMMARY

Interior design may involve developing and evaluating a design for aroom or environment. For example, a designer may wish to positionvarious objects, including furniture, lighting fixtures, and wallhangings, within a two-dimensional (2D) environment of an interior room.Conventional interior design tools may enable a user to position athree-dimensional (3D) model of an object by selecting the object, and“dragging and dropping” the object to a location in the 2D environmentusing a mouse, keyboard or other input device.

The inventors herein have recognized various issues with the abovemethods. Namely, although 3D objects may be positioned independentlywithin the 2D environment, it may be difficult to precisely align the 3Dobject relative to other objects already present in the 2D environmentand the different planes of the 2D environment.

One approach that at least partially address the above issues mayinclude a method for placing a 3D object in the 2D environment,comprising, receiving an image of the 2D environment, receiving an imageof the 3D object, determining the scale and perspective for the 2Denvironment for placing the 3D object in the 2D environment andpositioning the 3D object in the 2D environment based on the calculatedposition.

Another example embodiment may include a method of placing the 3D objectin the 2D environment, comprising, capturing the 2D environment with amobile device, calculating perspective and scale based on a perspectiveplane or wall drawn for the different planes (wall plane, ground plane,top plane and so forth) of the 2D environment and positioning the 3Dmodel of the object in the 2D environment based on the calculated objectposition. A user may use one or more mobile device sensors to automatethe level of the different planes. The user may need to add the lowercorners to calculate the geometry of the 2D environment. Further, a usermay select intersection points between wall planes and ground planes,join these intersecting points with intersecting lines and form walls,thereby converting the 2D environment into a 3D space. Additionally, themethod allows the user to extend the wall plane, enabling the user toform a larger 3D space. In further embodiments, the method herein mayallow the user to add 3D models of objects which may be configured toremain flush with the wall plane.

It should be understood that the summary above is provided to introducein simplified form a selection of concepts that are further described inthe detailed description. It is not meant to identify key or essentialfeatures of the claimed subject matter, the scope of which is defineduniquely by the claims that follow the detailed description.Furthermore, the claimed subject matter is not limited toimplementations that solve any disadvantages noted above or in any partof this disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a block diagram illustrating the overall system forvisualization of 3D models of objects in a 2D environment, in accordancewith various embodiments.

FIG. 1B is a schematic illustration of a system for visualization of 3Dmodel of objects in a 2D environment.

FIG. 2 is a block diagram showing various modules of an engine forvisualization of 3D models of objects in a 2D environment, in accordancewith various embodiments.

FIGS. 3A, 3B and 3C are example representations of the 2D environment300 with a user providing wall location on the 2D environment to form a3D model of the 2D environment.

FIG. 3D is a further example of the 2D environment 300 along with a wallobject.

FIG. 4 is an example flowchart for a method of placing an object in the2D environment with additional scale and perspective.

FIGS. 5A and 5B are examples of enhanced wall tagging.

FIGS. 6A, 6B, 6C and 6D are further example representations forming a 3Dmodel of a space corresponding to the 2D environment.

FIG. 7 illustrates an example of a computer network system, in whichvarious embodiments may be implemented.

DETAILED DESCRIPTION

The present description relates to visualization and adding of 3Dobjects to a real environment represented by a 2D photo or video. A usermay import photographic images, digital images, live video streams, andother graphical representations of a 2D environment. The user may theninsert a 3D object into the 2D environment with respect to the scale andperspective of the 2D environment. The user may select intersectionpoints between different planes within the 2D environment. The differentplanes may include wall plane, ground plane (e.g., the flooring plane),top plane (e.g., the ceiling plane) and so forth. The user may furtherselect or add points that automatically connect to previous points, thusproviding lines of edges of a place. As we already know the ceilingheight, the other three edges of a plane are automatically formed. Thelines thus formed may help the user define the planes of the 2Denvironment more precisely. Precise and accurate defining of the 3Denvironment that matches the 2D environment, is useful for the user toposition and move 3D objects in the 2D environment or to importadditional 3D objects into the 2D environment.

Further, the user may save the resulting image of the 3D object or 3Dobjects in the 2D environment to a personal computer (PC) or networkdatabase for future use or reference, or post the resulting image on asocial network, and perform other operations on the image. Further, theuser may have some previously saved images which the user may use tocompare with the newly obtained images in order to select preferablecombinations of a 3D object in a 2D background.

Additionally, the user may be connected to various social networkingservices and/or microblogs, such as Facebook™, Twitter™, and other suchnetworking services. Connection to social networking services and/ormicroblogs may allow a user to interact with his contacts to share andobtain opinion and feedback on an image obtained after placing 3Dobjects in 2D environment. Further, the user may also request help fromdesigning services to arrange 3D objects within a given 2D environment.

Visualization and addition of 3D objects to any 2D environment providesample opportunities in various spheres of human life. Spatialrepresentation of 3D objects may help in comprehending and learning,designing and drafting, efficient space management, and accelerateddecision making and planning. The ability to represent virtual 3Dobjects in a real environment can provide further applications, such asselecting furniture for a house, designing kitchen cabinets, selectingdisplay and presentation equipment for conference rooms, presentationlayouts for tradeshow booths, industrial planning and industrialequipment placement, medical equipment placement, and other space anddesign applications.

FIG. 1A is a block diagram illustrating the overall system forvisualization of 3D models of objects in a 2D environment, in accordancewith various embodiments of the present application. FIG. 2 is a blockdiagram showing various modules of an engine for visualization of 3Dmodels of objects in the 2D environment. FIGS. 3A, 3B and 3C are examplerepresentations of the 2D environment 300 with a user providing walllocation on the 2D environment to form a 3D model of the 2D environment.FIG. 3D is an example of the 2D environment 300 along with a wallobject. FIG. 4 is an example flowchart for a method of placing an objectin the 2D environment with additional scale and perspective. FIGS. 5Aand 5B are examples of enhanced wall tagging. FIGS. 6A, 6B, 6C and 6Dare further example representations forming a 3D model of a spacecorresponding to the 2D environment. FIG. 7 illustrates an example of acomputer network system, in which various embodiments may beimplemented.

FIG. 1A illustrates a block diagram of an overall system 100 forvisualization of 3D objects in a 2D environment, in accordance withvarious embodiments of the present disclosure. Overall system 100 mayinclude a user 120, user devices 130, a user interface 140, an engine200 for virtual visualization of 3D models of objects in 2D environment,a network 202, and various web applications 204. The user devices 130may include a mobile phone 132, a personal computer (PC) 134, a personaldigital assistant (PDA) 136, a tablet PC 137, a wearable computer device138 such as Google Glass™ and Recon Jet™, a 3D scanner 139 and the like.The user 120 via user devices 130 interacts with the user interface 140.The user may also directly interact with the user interface viatouchscreen, keyboard, mouse key, touch pad and the like. The engine 200for visualization of 3D objects in 2D environment may comprise of localdevice-based, network-based, or web-based service available on any ofthe user devices 130. The user may further interact with the webapplications 204. The web applications may include social networkingservices.

The user 120 may interact with the user interface 140 via the userdevices 130. The system for virtual visualization of 3D models ofobjects in 2D environment 300 may be implemented on a local device orvia a network-based or web-based service accessible via user devices130. The user 120 may periodically interact with the system for virtualvisualization of 3D models of objects in 2D environment 300 via the userinterface 140 displayed using one of the user devices 130. Additionally,the user 120 may periodically interact with the web application 204 suchas a social networking service (including social networks, microblogs,web blogs, and other web resources) via the system for virtualvisualization of 3D models of objects in 2D environment 300 and thenetwork 110 to upload graphics obtained using the system for virtualvisualization of 3D models of objects in 2D environment 300, communicatewith members of the social networking service, or request help fromdesign services, or purchase a 3D object through web applications 204.

The user devices 130, in some example embodiments, may include aGraphical User Interface (GUI) for displaying the user interface 140. Ina typical GUI, instead of offering only text menus or requiring typedcommands, the engine 200 may present graphical icons, visual indicators,or graphical elements called widgets that may be utilized to allow theuser 120 to interact with the user interface 140. The user devices 130may be configured to utilize icons in conjunction with text, labels, ortext navigation to fully represent the information and actions availableto users.

The network 202 may include the Internet or any other network capable ofcommunicating data between devices. Suitable networks may include orinterface with one or more of, for instance, a local intranet, aPersonal Area Network (PAN), a Local Area Network (LAN), a Wide AreaNetwork (WAN), a Metropolitan Area Network (MAN), a virtual privatenetwork (VPN), a storage area network (SAN), an Advanced IntelligentNetwork (AIN) connection, a synchronous optical network (SONET)connection, Digital Subscriber Line (DSL) connection, an Ethernetconnection, an Integrated Services Digital Network (ISDN) line, a cablemodem, an Asynchronous Transfer Mode (ATM) connection, or an FiberDistributed Data Interface (FDDI) or Copper Distributed Data Interface(CDDI) connection. Furthermore, communications may also include links toany of a variety of wireless networks, including Wireless ApplicationProtocol (WAP), General Packet Radio Service (GPRS), Global System forMobile Communication (GSM), Code Division Multiple Access (CDMA) or TimeDivision Multiple Access (TDMA), cellular phone networks, GlobalPositioning System (GPS), Cellular Digital Packet Data (CDPD), Researchin Motion (RIM), limited duplex paging network, Bluetooth radio, or anIEEE 802.11-based radio frequency network. The network 202 may furtherinclude or interface with any one or more of an RS-232 serialconnection, an IEEE-1394 (Firewire) connection, a Fiber Channelconnection, an IrDA (infrared) port, a Small Computer Systems Interface(SCSI) connection, a Universal Serial Bus (USB) connection or otherwired or wireless, digital or analog interface or connection, mesh. Thenetwork 202 may be a network of data processing nodes that areinterconnected for the purpose of data communication.

FIG. 1B is a schematic illustration of a system for visualization of 3Dmodels of objects in a 2D environment. Specifically, as shown anddescribed in more detail herein, a 2D environment may be providedincluding a 2D image 260. The 2D image 260 may be a photograph, linedrawing or video. For example, the 2D image may be a picture of a roomor part of a room. The 2D image 260 may be a personalized image capturedby a user's hand-held device or other computing device. In otherexamples, the 2D image 260 may be saved or imported from a storagedevice on a remote server or other device.

Perspective and scale may be added to the 2D image 260. The perspectiveand scale may be saved as part of the image such that the 2D image isnow a combined image 262 having both the 2D information and perspectiveand scale information associated with the 2D image.

In some examples and as described in more detail herein, walls may beselectively positioned within the image. Further, in some examples, a 3Dobject may then be positioned within the 2D image with perspective andscale overlay, combined image 262. The 3D object may be realisticallypositioned within the resulting image 264 based on the perspective andscale overlay information. Further, the 3D object may be positionedwithin resulting image 264 such that the 3D object may be perceived inthree dimensions within the 2D environment.

FIG. 2 illustrates a block diagram for the engine for virtualvisualization of 3D models of objects in 2D environment 300. The enginefor virtual visualization of 3D models of objects in 2D environment 300may include a receiving module 206, an importing module 208, avisualizing module 210, an adding scale and perspective module 211, asuperimposing module 212, an object replacing module 214, a movingmodule 216, a modify object module 217, a spinning module 218, a savingmodule 224, an uploading module 226 and a purchasing module 228.

Although various modules of the engine for visualization of 3D models ofobjects in 2D environment 300 are shown together, the engine forvisualization of 3D models of objects in 2D environment 300 may beimplemented as a web service, via a distributed architecture, or withina cloud computing environment. The files created with this applicationmay contain perspective, scale and 3D model information in addition tothe 2D graphic background information. The files may be shared, or sentto, or opened on any user devices which may be configured to displaythese files.

The receiving module 206 may be configured to receive inputs from theuser 120 regarding an import request. The import requests may includeuser-specified data regarding a 2D environment, such that the 2Denvironment may be used as a background environment for displaying oneor more 3D models of objects. The importing module 208 may be configuredto import the 2D environment. The 2D environment may be a 2D photographof an interior space such as a living room, or a bedroom, or a kitchenspace, or a bathroom, or a garage, or an office space, and so forth.

The visualizing module 210 may help the user 120 to visualize theimported 2D environment. The visualizing module 210 may be configured toreceive a superimposing request from the user 120. The superimposingrequest may receive object information data related to a 3D object. The3D object is associated with object information data which may includemetadata encoding one or more of a set of parameters relevant to the 3Dobject, manufacturer's guidelines, regulations and guidelines governingthe 3D object, safety guidelines for the 3D object, and any otherrelevant information specific to the 3D object.

The object information data may include metadata defining the behaviorof the 3D object within the 2D environment. For example, a 3D object mayinclude metadata defining an object as one of a wall object, ceilingobject, floor object, or combination thereof. The metadata may furtherdefine the placement and movement of the object within the environment.

The object information data may also include metadata encoding aninformation tag. The information tag may include a description of the 3Dobject including dimensions, materials, cost, manufacturer, and otherinformation specific to the 3D object discussed below.

The object information data may also include metadata encoding graphicaldata, spatial data, and other rendering data for superimposing the 3Dobject within the 2D environment. Graphical, spatial, and rendering datamay be processed by a computing device to generate and display the 3Dobject to the user.

The parameters may include attributes, instructions, behaviorcharacteristics, visualizations to be displayed by the 3D object, andother such scripts associated and essential for graphical use of the 3Dobject. For example, the parameters may include, but are not limited to,geometric attributes, depth value, color value, the physical dimensionsof the 3D object, mounting requirements for the 3D object, metadataidentifying the 3D object as a floor object, wall object, ceilingobject, or combination thereof, power requirements, length of a powercord, and any other relevant information describing the 3D object.

Additionally, the object information data may include additionalparameters such as manufacturer's guidelines and/or safety guidelinesfor safe and proper installation and operation of the 3D object. Forexample, the object information data may include metadata encoding aminimum clearance or spatial requirement surrounding the 3D object. Theminimum clearance/spatial requirement may be required for adequateventilation of the 3D object, prevention of fire hazards, noise control,clearance of moving parts of the 3D object, or to satisfy any otherpersonal safety, medical safety, or industrial safety standard. As anexample, a display may require 6 inches clear from the cooling fangratings to allow for proper airflow to cool the electric internalswithin the display. As another example, in a medical application, amagnetic resonance imager may generate an electro-magnetic field in anarea surrounding the magnetic resonance imager that may interfere withother electrically powered or magnetically sensitive medical equipment,personal medical equipment such as a pacemaker, and any magneticmaterial that may be drawn to the magnetic resonance imager by magneticattraction. In an industrial application, some industrial equipment havemoving or rotating parts that may extend past the main body of the pieceof industrial equipment. Therefore, to allow for proper operation of theindustrial equipment, other equipment or objects may be located outsidea minimum clearance or spatial requirement surrounding the piece ofindustrial equipment.

In another example, in a restaurant environment, the tables, chairs, andother objects within the restaurant space may be required to be arrangedsuch that a minimum clearance surrounding each object is maintained andthat pathways for traversal are maintained clear and of sufficientdimensions to meet federal and local accommodation codes. Therefore,each chair and each table may include a minimum clearance or spatialrequirement surrounding the table or chair to meet the governingguidelines.

In another example, in a retail environment, retail display fixtures maybe arranged within the retail space such that a minimum clearancesurrounding each fixture may be maintained to allow shoppers to easilymove within the retail space and to meet federal and local accommodationcodes. In addition to satisfaction of the governing access codes, the 3Dmodels of the display fixtures and accompanying merchandise may bearranged within the 2D image of the retail space allowing retailplanners to efficiently design retail merchandising plans, design retailexhibit plans, and then electronically distribute the design plans tothe stores. Further, the retail merchandising teams at the stores maypropose amendments to the design plans that are specific to theavailable retail space within the store accounting for differences dueto the specific architectural design of the store space. Theseamendments may then be reviewed and approved by the retail planners,thereby providing an advantage of an efficient and electronic means ofdistributing, amending, and approving retail merchandising plans.

The object information data may be provided by multiple sources,including but not limited to, one or more of the manufacturer of the 3Dobject, government safety regulations such as provided by theOccupational Safety and Health Administration or other Federal or localgoverning body, federal and local accommodation codes such as theAmericans with Disabilities Act and federal, state, and local firecodes, the user may provide the object information data, objectinformation data may be downloaded from a remote database, encoded by anasset manager or managing service providing the 3D objects, or any othersuitable means. It will be appreciated that the listed sources of objectinformation data are not intended to be limiting.

In some embodiments, the object information data may include one or morespatial requirements. The spatial requirements may exceed the geometricdimensions of the 3D object and govern interactions between the 3Dobject and other object entities. The spatial requirements of a 3Dobject may be specific to the object based upon one or more of amanufacturer's recommendation, imported from a remote database,government regulation, configured by the user, or any other suitablesource.

In some embodiments, the two-dimensional environment may also includeenvironmental information data. The environmental information data mayinclude metadata which may encode one or more of a set of propertiesrelevant to the 2D environment, regulations and guidelines governing the2D environment such as governing access regulations, industrial safetystandards, and governing fire codes, safety guidelines for the 2Denvironment, and any other relevant information specific to the 2Denvironment. The properties encoded by environmental information datamay include one or more of the dimensions of the 2D environment,characteristics of the 2D environment governing the behavior andmovement of 3D objects within the 2D environment, locations of powersupplies and the voltage and frequency supplied, constructioninformation such as location of load bearing members, allowable loadinformation, construction materials, available ventilation, acousticinformation, fixed lighting sources, and any other information relevantto the two-dimensional environment.

As discussed above, the environmental information data may be providedby multiple sources such as one or more of government safety regulationssuch as provided by the Occupational Safety and Health Administration orother Federal or local governing body, federal and local accommodationcodes such as the Americans with Disabilities Act and federal, state,and local fire codes, the user may provide the object information datausing the modify object module, object information data may bedownloaded from a remote database, encoded by an asset manager ormanaging service providing the 3D objects, or any other suitable means.

In these embodiments properties of the 2D environment may be retrievedfrom the environmental information data and analyzed to determineinteraction with 3D objects within the 2D environment. As a non-limitingexample, one or more threshold barriers between two planes of the 2Denvironment may be adjusted to satisfy one or more conditions encoded inthe metadata of both the environmental information data and the objectinformation data.

The user 120 may select the 3D object from a library of 3D objects orfrom 3D objects imported or saved by the user, which the user may havecustomized or made changes to. The received superimposing request ispassed to the superimposing module 212, which superimposes the selected3D object, based on the superimposing request onto the 2D environment.

A non-limiting example of a 3D object may be a display. The display maybe any of a television, monitor, computer monitor, or visual arrayincluding, but not limited to, a liquid crystal display (LCD), lightemitting diode (LED) display, organic light emitting diode (OLED)display, cathode based display, or any other display device capable ofproviding a visual image to a viewer. The display may comprise any of aplurality of shapes, such as square, rectangular, curved, round, or anysuitable geometric shape. Further, the display may include a supportframe, may be frameless, or any other structural form factor known inthe art. The display may be a stand-alone display or one of a pluralityof display units comprising a composite display including multipledisplay units.

In addition, the visualizing module 210 may be further configured toreceive a request for object replacement from the user. The objectreplacement request may include object information data or metadataencoding object information data including dimensions, or color, ormaterial type of the 3D object selected from the library of 3D objects.The received object replacement request is passed to the objectreplacing module 214, which changes the object, based on the request.Additionally, the selected 3D object may be replaced by the user 120with another 3D object. For example, the user may replace a large chairwith a small chair in a 2D environment after visualizing both the largechair and the small chair in the 2D environment.

In some embodiments, the physical properties of the 3D object,interaction between object entities and between object entities and theenvironment may be analyzed by the visualizing module 210 using theobject information data and environmental information data.

The visualizing module 210 may further help the user 120 to alter viewsettings such as brightness or contrast of the imported 2D environment.Altering the brightness or contrast of the 2D environment may allow theuser to visualize the positioning of the 3D object in the 2D environmentunder more light or less light situations. For example, the user may beable to visualize and appreciate how the 3D object superimposed on the2D environment may look during day time versus night time conditions, orconditions of bright lighting or dim lighting where a lamp or lightfixture is being used. Additionally, the visualizing module 210 may alsohelp the user with directional options, such as a compass or a northfacing arrow to identify the orientation of the 2D environment. The usermay prefer to have directional options for personal reasons, oraesthetic preference, or for daylight requirement needs.

The visualizing module 210 may be further configured to receive scaledata (defining the scale of the 2D environment) and the perspective data(defining the perspective of the 2D environment) request from the user.The scale data and perspective data request is passed on to the addingscale and perspective module 211, which allows the user to adjust thescale and perspective of the 2D environment.

The method then moves on to the moving module 216. The moving module 216may be configured to receive an object spinning request for rotationalmovement of the 3D object imported on to the 2D environment. Thespinning request thus received is passed on to the spinning module 218,which allows spinning or any such rotational movement of the 3D objectin the 2D environment. For example, the 3D object inserted onto the 2Denvironment might be a chair or triangular table, and the user mayprefer to precisely orient the chair seat in a particular direction orin case of the triangular table, the user may prefer to have the threecorners of the table orient in a certain preferred directions.

The user may also modify one or more properties of the 3D object bychanging the color, material, and/or dimensions of the 3D object. Themodify object module 217 may be configured to receive a request tochange one or more properties of the 3D object. For example, a user mayhave a recessed space within a wall plane 310 as illustrated in FIG. 3D.The user may choose a display 390 to place in the recessed space. Theuser may change the color of the framing of display 390 to match thecolor of wall plane 310. Returning to FIG. 2, the modify object module217 may receive the request to change the color of the framing ofdisplay 390 and change the color of the display framing.

As the user finalizes the appropriate color, material, positioning andspinning of the selected 3D object within the 2D environment, theresulting image may be uploaded to a social network website,microblogging service, blog or any other website resources by theuploading module 226. Thereby, the user 120 may receive inputs fromcontacts such as family members or friends regarding the resulting imageformed by the 3D object placement in the 2D environment. Withappropriate inputs, the user 120 may choose to alter the resulting imageof the 3D object in the 2D environment. In addition, based on userrequest, the saving module 224 may save the resulting image for futureuse or reference. Alternatively, the user 120 may be highly satisfiedwith the overall look of the 3D object in the 2D environment and decideto purchase the 3D object. In such a situation the purchasing request ispassed to the purchasing module, 228. In some embodiments, a contact ofthe user 120 via social networking web sites in the web application 204,may request the user to purchase the 3D object in consideration.

FIG. 3A illustrates an example 2D environment 300. The example 2Denvironment 300 may include an interior space bound by a ground plane(e.g., a flooring surface) 340, and four wall planes, 310 separated byintersection lines 330 between adjacent wall planes. In the exampleshown here, the finger icon 350 or other suitable indicator may select aset of intersection points 312, 314, 316, 318, 320 on the ground. Theintersection points 312, 314, 316, 318, 320 may define points betweenwall planes 310 and ground plane 340. As the ground plane points aredefined, the intersection points 313, 315, 317, 319 and 321 formedbetween the wall planes 310 and the top plane and intersection lines 330between the ground plane points and corresponding intersection pointsare automatically generated.

It should be appreciated that as described herein, a user may indicatetwo or more intersection points along the ground and wall plan and suchintersection point may be sufficient to tag and generate a wallplacement. The scale and perspective within the drawing enables the userto indicate a wall intersection and then the system may infer the wallposition creating a wall normal to the ground plane. Further, gyroscopeinformation from the electronic device provide information describingthe orientation of the electronic device acquiring the 2D image. Thegyroscope data may be employed with at least two wall-floor intersectionpoints on a same wall to automatically generate a wall plane.

Turning to FIG. 3B, the finger icon 350 or other suitable indicator mayconnect the intersection points discussed above by intersecting lines.For example, the user may use the finger icon 350 or other suitableindicator to select a straight line 344 that connects points. In someembodiments, the lines are automatically formed as the intersectingpoints are defined. The user may further select a wall and adjust thecurvature of the wall.

In further embodiments, a menu bar 360 may be displayed to the userwherein the user may have the option of selecting a concave line 342 toconnect intersection points 316 and 318, instead of the straight line344 to connect intersection points 316 and 318, or a convex line 346 toconnect intersection points 316 and 318. In the example shown in FIG.3B, the user selects the straight line 344 to connect the intersectionpoints 316 and 318 on the ground plane. Correspondingly, the topstraight line 344 may change to match the concave line 342 or the convexline 346.

Similarly, the user may have the option to select a concave line 322, ora straight line 324, or a convex line 326, between pair of intersectionpoints 312 and 314. For the intersection points 312 and 314 on theground plane, the user may select the concave line 322. Consistently,the intersection points 313 and 315 on the top plane may be connected bythe concave line 322.

The user may prefer to select the straight line 334 to connectneighboring intersection points 314 and 316 on the ground plane.Similarly, the user may select the straight line 334 between theintersection points 315 and 317 on the top plane. The user may alsoselect concave line 332 or convex line 336.

Further still, the user may select the concave line 352, to connect theintersection points 318 and 320 on the ground plane. Consistently, theuser may select the concave line 352 to connect the intersection points319 and 321 on the top plane. As discussed above the user mayalternatively select straight line 354 or convex line 356.

FIG. 3C illustrates the final image after the user selects theintersection points and the intersecting lines between the differentplanes in the 2D environment. The 2D environment 300 may be defined bythe user to include wall planes of different shape and intersectinglines of different shapes between wall planes and ground plane andbetween wall planes and top planes.

FIG. 3D illustrates an example of the 2D environment 300 with a window370, inserted and flush with the wall plane 310. The window 370 mayfurther include a first window pane 372A and a second window pane 372B,separated by a window grid 374. The first window pane 372A, the secondwindow pane 372B, along with the window grid 374 may also be configuredto remain flush with the wall plane 310 when viewed in perspective.Similarly, in some embodiments, other parts of the window 370, such as awindow rim or a window hinge may be inserted in the wall plane 310, suchthat the window rim and the window hinge may not be extending out of thewall plane 310. It should be appreciated that a user may select wallobjects and position them on a new wall. The wall objects may adjust tothe wall position, with the object appropriately positioned such thatfeatures which extend from the wall plane (either in front of the wallplane or behind the wall plane) are properly visualized such that thewall object features which are flush with the wall plane are shown asflush or level with the wall plane.

Additionally, the window 370 may include a window knob 376 and a windowsill 378. The window knob 376 and the window sill 378 may protrudeinside the room environment of the 2D environment 300. In contrast, thewindow may further include a window ledge, or a window header behind thewall plane 310 (not shown), which may be configured to extend out fromthe wall plane 310, instead of extending inwards. As indicated at 375, aportion of the object may be positioned behind the plane of the wall. Insome examples, a user may select to keep such portions of objectsextending behind the wall invisible, while in other examples, a user mayselect to view portions of objects which extend beyond the plane of thewall.

As another example, the wall plane 310 may include a display 390.Display 390 may be mounted such that the display is flush with the wallplane 310, where a portion of the display 390 extends behind wall plane310 into a recessed space. The recessed space may be visualized by oneor more wall-hidden surface intersection lines 392 connecting wall plane310 to a second plane located behind wall plane 310. In someembodiments, the user may select to view the recessed space andwall-hidden surface intersection lines 392 behind the wall plane 310 asshown. Further, the dimensions of display 390 may be matched to thedimensions, length, width, and depth, of the recessed space. It will beappreciated that although a display 390 is illustrated, 3D objects suchas decorative objects, audio-visual equipment, wall art, or any 3Dobject selected by the user and fitting the dimensions of the recessedspace may be superimposed onto the 2D environment in the recessed space.

As another example, the wall plane 310 may extend into the space of the2D environment to a second plane in front of the wall plane 310 formingan additional surface within the 2D environment. The additional surfacemay be a horizontal planar surface, a concave surface, a convex surface,an inclined planar surface, or the like. In this example, the wall plane310 may extend outward forming a mantle, wall shelf, or other suitablearchitectural structure. Wall-hidden surface intersection lines mayextend from the second plane in front of the wall plane 310 to the wallplane 310 visualizing the geometry of the additional surface. The usermay select to view the wall-hidden surface intersections lines asdescribed above. Further, the user may position any suitable 3D objectupon the additional surface.

Alternatively, the wall plane 310 may include a door. The door may beinserted such that the door is flush with the wall plane 310. Parts ofthe door, such as a door frame, a door panel, a door hinge, a doorthreshold may be configured to remain flush with the wall plane 310.Further embodiments may further include parts of the door, such as adoor bolt, a door knob, a door header, which may extend out from thewall plane 310.

As another example, a room or part of a room may be positioned behind awall, such as the room indicated at 380. Invisible planes 382 may definethe room which extends behind the visible wall plane. In some examples,a user may select to view a “hidden” room or one or more of theinvisible wall planes.

FIG. 4 illustrates an example flow chart of a method 400 for positioningand aligning 3D objects in 2D environment. The method 400 may beperformed by processing logic that may comprise hardware (e.g.,programmable logic, microcode, and so forth), software (such as computercode executable on a general-purpose computer system or a specificallyconfigured computer system), or a combination of both. The processinglogic resides at the engine 200 for virtual visualization of 3D modelsof objects in 2D environment, as illustrated in FIG. 2. The method 400may be performed by the various modules discussed above with referenceto FIG. 2. Each of these modules may comprise processing logic.

Method 400 begins at operation 404 where the user 120 may obtain a 2Denvironment according to an import request. Then the receiving module206 may receive, from the user, scale and perspective data on groundplane at operation 406. Similarly, the receiving module 206 may receive,from the user, scale and perspective data on ceiling height at operation408. The user may define the ceiling and ground plane by selectingpoints on the 2D environment.

Method 400 continues at operation 420, for positioning 3D models ofobjects. At operation 422, the receiving module 206 may receive arequest to superimpose 3D models of objects onto the 2D environment. Asuperimposing request may include a user selecting a 3D object from alibrary of 3D models of objects (in the engine for virtual visualizationof 3D models of objects in 2D environment 300), from 3D models ofobjects saved or imported by the user, or 3D models of objects obtainedfrom online resources.

Method 400 may include locate walls 410 including operations 412, 414,415, and 416. At operation 412, the user may select intersection pointsbetween different planes, where the plane may be a wall plane, a groundplane, a top plane, and so forth. At operation 414, the user maygenerate wall plane based on selection of intersection points andintersecting lines between different planes. At operation 415, the usermay modify the wall plane. The user may change any of a shape, depth,and/or contour of the generated wall plane. At operation 416, if theuser decides to include additional wall-floor intersection points, thenthe method returns to operation 412. If the user decides not to includeadditional wall-floor intersection points, then the method moves tooperation 422 to obtain 3D objects to be placed within the 2Denvironment.

At operation 424, the selected 3D model of the object may besuperimposed on the 2D environment relative to the scale and perspectiveof the 2D environment. As discussed above in reference to FIG. 2, themoving module 216 may receive a request to move the 3D objects in the 2Denvironment. The request to move or reposition the 3D objects mayinclude data on the selection of a direction by the user. As examples,the 3D objects may be moved in a vertical and/or horizontal direction.As another example, the 3D object may be rotated about a vertical,horizontal, and/or other rotational axis. The 3D objects may be wallobjects, such as windows, posters, lighting fixtures, doors, etc.Further, in some examples, vents, outlets, speaker systems, televisiondisplays, may be identified as the 3D object for positioning in thespace geometry.

At operation 428, the user may decide to superimpose additional 3Dobjects in the 2D environment. If the user prefers not to add any more3D objects then the method comes to an end. If the user decides to addmore 3D objects to the 2D environment, then the method returns tooperation 422.

FIGS. 5A and 5B illustrate a method for enhanced wall tagging. Shown inFIG. 5A, is a 2D environment 500 with a ground plane 502 and a top plane503. The user may select a point 504, a point 506 and a point 508, onthe ground plane 502, which may be joined by intersecting lines. Oncethe ground plane points 504, 506 and 508 are selected, a point 516, apoint 518 and a point 520 may be configured to appear concurrently onthe top plane 503. The user may tap on the region between the point 504and the point 516 to form an intersecting line 510. Similarly, the usermay tap on the area between the point 506 and the point 518 to form anintersecting line 512, and further on the area between the point 508 andthe point 520 to form an intersecting line 514. Thereby, a wall 522 maybe formed by the points 504, 506, 518 and 516. Similarly, a wall 524 maybe formed by the points 506, 508, 518 and 520.

In addition to the wall formation, the method herein, may allow the userto extend the walls. As depicted in FIG. 5B, the ground plane points 504and 508 when not connected to the corresponding top plane points, mayindicate extended walls. For example, the wall 522 or the wall 524 maynot be required to stop within the 2D environment 500. In this case, theuser may not be able to see the entire wall but may be able to visualizea larger area. The points 504, 516, 508 and 520, are no longer cornerpoints for the wall 522 and the 524. As shown in FIG. 5B, the wall 522and the wall 524 do not have a definite ending. Therefore, the user maybe able to visualize spaces that extend beyond the field of view of the2D environment.

In some embodiments, the walls 522 and 524 may include a passageway suchas a corridor or a hallway. In further embodiments, the extension of thewall 522 and the wall 524 may allow the user in placing 3D models ofobjects in the 2D environment 500. For example, if the user prefers toplace a couch in the 2D environment 500, the user may position the couchto extend beyond the intersecting lines 510 and 514. As illustrated inFIG. 5B, the points 504 and 516, do not define corners, these are pointswithin the wall 522. Similarly, the points 508 and 520, are not cornerpoints, instead, these are points within the wall 524. The wallextension enables the user to visualize larger environments and therebyposition 3D models of objects which otherwise the user may not haveincluded in the environment.

In some examples, a phantom edge 530 may be displayed. Alternatively, aphantom edge may be hidden. The phantom edge may be used as a referenceor guide. In some embodiments, a user may adjust or select the phantomedge when positioning 3D objects within the room, such as, for example,using the phantom edge for a guide for placement but not as a limit orcap for placement.

FIGS. 6A-6D illustrate example representation of 2D environment 600wherein the user may be able to select intersecting points andintersecting lines between different planes (a wall plane, or a groundplane, or a top plane) of the 2D environment and form walls by selectingthe intersecting points and lines, thereby forming the 3D model spacematching the 2D environment.

Turning now to FIGS. 6A, 6B, 6C and 6D. FIGS. 6A-6D may illustrateanother example 2D environment 600. The example 2D environment 600 mayinclude an interior space bounded by a ground plane 602 (e.g. a flooringsurface), a wall plane 604 and a wall plane 606.

Further, FIG. 6A may include a menu bar 650 positioned at the bottom orlower level of the display screen. The menu bar 650 may aid a user toaccess various functions for customizing the 2D environment. In theexample menu bar 650 shown in FIG. 6A, a first virtual button 652, asecond virtual button 654, a third virtual button 656, a fourth virtualbutton 658, a fifth virtual button 660 and a sixth virtual button 662are presented along the menu options in the menu bar 650. The firstvirtual button 652, which is labeled “Live Mode,” may be selected by theuser 120 to visualize a 2D environment with any of the user devices 130,discussed above. The “Live Mode” button allows the user 120 to switchbetween edit mode (where objects may be moved, edited and so forth) anda “live” mode where the end result is displayed.

The second virtual button 654, which is labeled “Create Walls,” may beselected by the user 120 to form walls within the 2D environment. Thethird virtual button 656, which is labeled “Add Products,” may beselected by the user 120 to add 3D objects to the 2D environment 600.These 3D objects may be obtained by the user 120 from the network 202 orfrom information sharing via social networking in the web applications204. In one example, the user may select one or more 3D objects from acatalog of 3D objects from multiple vendors and 3D object sources todisplay in the 2D environment.

If the user decides to superimpose an additional 3D object onto the 2Denvironment 600, then the user may select another 3D object from alibrary of 3D objects. The user may access the library by clicking on orselecting the Add Products button, third virtual button 656, on the menubar 650. The user may use one or more of the input devices of userdevices 130 to access the Add Products button. The additionally selected3D object may then be superimposed on the 2D environment 600.

The fourth virtual button 660, which is labeled “Undo,” may be selectedby the user 120 to undo or remove a prior modification of the selected3D objects, or a most recent selection of the 3D object. For example, ifthe user 120 is not satisfied with the positioning of a 3D object withrespect to the chair 610, the user 120 may undo the addition orsuperimposing of the 3D object onto the 2D environment 600. The fifthvirtual button 662, which is labeled “Redo,” may be selected by the user120 to redo a movement of the 3D object that was recently performed. Forexample, the user 120 may decide to move a 3D object superimposed on the2D environment horizontally. The user may further decide to move the 3Dobject, in which case the user may select the fifth virtual button 662to “Redo” the horizontal move to repeat the previous move.

The sixth virtual icon button 663, which is labeled “View Settings,” maybe selected by the user 120 to review the settings of the 2Denvironment, in this example, 2D environment 600. For instance, the user120 may not be satisfied with the brightness of the 2D environment 600and hence would prefer to adjust the brightness, or the user 120 may notbe satisfied with the color contrast of the room and would prefer toadjust the contrast settings. Additionally, the View Settings button 663may provide the option of direction via a compass or a north pointingdirectional arrow. This may aid the user 120 in placing 3D objects in aparticular preferred direction. Several users may have directionalpreference for placing of objects with respect to object material typeand color and the directional aspect is hence very useful for suchpurposes.

In some embodiments, a seventh virtual button 664 may be selected byuser 120 to view personalized content such as a personal 3D objectlibrary, for example, or gallery of saved 2D environments. An eightvirtual button icon 668 may be selected to view favorite applicationcontent as previously identified by user 120.

Furthermore, the user 120 may save and share screenshots of the 3Dobject positioned in the 2D environment 600. The user may further haveaccess to another menu bar 640. The menu bar 640 may be displayed with avirtual icon arrow 648, displayed at the top right corner in FIG. 6A.The menu bar 640 provides the user with the option to obtain help with a“Help” virtual icon button 642, or share the current image with a“Share” virtual icon button 644. The user may decide to obtain help orinput from contacts in social networking groups in the web application204 by sharing images of the 2D environment 600 with the 3D object.Further, the user may be satisfied with the placement of the 3D objectin the 2D environment and may then select a virtual icon button 646 toindicate “Done” or completion or virtual button 658 in FIG. 6B.

Turning to FIG. 6B, the user may decide to select the intersectionpoints and lines between the different planes, such as the wall planes,the ground plane and the top plane. As shown in FIG. 6C, the user mayselect an intersection point 612 on the ground plane, between the wallplane 604, the wall plane 606 and the ground plane 602. Further, theuser may select another intersection point 614 and then connect theintersection points 612 and 614 by selecting the area betweenintersection points 612 and 614. The user may connect the intersectionpoints 612 and 614, by a tap or click on the area between these points.An intersecting line 616 is formed, separating the wall plane 604 fromthe ground plane 602. Further the user may select an intersection point618 at the intersection of the wall plane 606 and the ground plane 602.Intersection points 612 and 618 may be connected by a line 620, suchthat line 620 separates the wall plane 606 from the ground plane 602.The user may further project a line 622 from the intersection point 612towards the top plane (e.g., ceiling plane) and a line 624 from theintersection point 618 towards the top plane.

In some embodiments, the user may tap and hold any of the ground planepoints such as the points, 618, 612 and 614, and move the point aroundfor accurate alignment with the 2D environment.

Some embodiments may further include a magnifying lens icon 643. Themagnifying lens icon 643 may aid the user in visualizing the planeintersection points on the ground plane.

Some embodiments may include receiving gyroscope data from the deviceand automatically correcting for the attitude or angle of the devicewhen the image of the 2D environment is obtained. In other embodiments,the user may manually perform the attitude correction by providing aninput through a displayed virtual icon button or slider.

As shown in FIG. 6D, by selecting the “View Settings” button, the usermay be able to select and adjust the ceiling height. In FIG. 6B, theuser selects the device height, in FIG. 6C, the user adds corners andintersecting lines to define planes and in FIG. 6D, the user adjusts theceiling height using the ceiling height menu 632. The user may alsoadjust the device height using the device height menu 630. As a sum ofall these steps, the user is able to define a 3D space in the 2Denvironment 600.

FIG. 7 shows an example electronic form of a computer system 700, withinwhich a set of instructions for causing a machine to perform any one ormore of the methodologies discussed herein may be executed. The machinemay be a PC, a tablet PC, a set-top box (STB), a PDA, a cellulartelephone, a web appliance, a network router, switch or bridge, or anymachine capable of executing a set of instructions (sequential orotherwise) that specify actions to be taken by that machine. In severalexample embodiments, the machine operates as a standalone device or maybe connected to other machines (e.g., networked). In a networkeddisposition, the machine may operate in the capacity of a server or aclient machine in a server-client network environment.

The example computer system 700 may be configured to include a processoror multiple processors 702 (e.g., a central processing unit (CPU), agraphics processing unit (GPU), or both), a main memory 704 and a staticmemory 706, which communicate with each other via a bus 708. Thecomputer system may further include a video display unit 710 (e.g., aliquid crystal display (LCD) or a cathode ray tube (CRT), and the like).The computer system 700 may also include an alphanumeric input device712 (e.g., a keyboard, and the like), a cursor control device 714 (e.g.,a mouse, touchpad, touchscreen, and the like), a disk drive unit 716 forreading computer readable medium (e.g., USB thumb drive, solid statememory drives, and the like), a signal generation device 718 (e.g., aspeaker, and the like (e.g., network interface card, and the like), anda network interface device 720.

Further, the disk drive unit 716 may include a computer-readable medium722, on which is stored one or more sets of instructions and datastructures (such as instructions 724) embodying or utilized by any oneor more of the methodologies or functions described herein.Additionally, the instructions 724 may also reside, completely orpartially, within the main memory 704 and/or within the processors 702during execution by the computer system 700. The main memory 704 and theprocessors 702 may also constitute machine-readable media. Furtherstill, the instructions 724 may be transmitted or received over anetwork 726 via the network interface device 720 utilizing any one of anumber of well-known transfer protocols (e.g., Hyper Text TransferProtocol (HTTP)).

The computer-readable medium 722 may include a single medium or multiplemedia (e.g., a centralized or distributed database and/or associatedcaches and servers) that store the one or more sets of instructions. Theterm “computer-readable medium” may further include any medium that iscapable of storing, encoding, or carrying a set of instructions forexecution by the machine and that causes the machine to perform any oneor more of the methodologies of the present application, or that iscapable of storing, encoding, or carrying data structures utilized by orassociated with such a set of instructions. Further, “computer-readablemedium” may further include, but not be limited to, solid-statememories, optical and magnetic media, and carrier wave signals. Suchmedia may also include, without limitation, hard disks, floppy disks,flash memory cards, digital video disks, random access memory (RAM),read only memory (ROM), and the like.

It will be appreciated that the configurations and routines disclosedherein are exemplary in nature, and that these specific embodiments arenot to be considered in a limiting sense, because numerous variationsare possible. For example, the above technology can be applied tovarious 3D objects superimposed on various 2D environments. The subjectmatter of the present disclosure includes all novel and non-obviouscombinations and sub-combinations of the various systems andconfigurations, and other features, functions, and/or propertiesdisclosed herein.

The above-disclosed embodiments may be combined with one or more of theembodiments and disclosures in U.S. Provisional Patent Application No.61/992,629 entitled “METHOD FOR PROVIDING SCALE TO ALIGN 3D OBJECTS IN2D ENVIRONMENT” filed May 13, 2014, one or more of the embodiments anddisclosures in U.S. Provisional Patent Application No. 61/992,719entitled “METHOD FOR PROVIDING A PROJECTION TO ALIGN 3D OBJECTS IN 2DENVIRONMENT”, filed May 13, 2014, one or more of the embodiments anddisclosures in U.S. Provisional Patent Application No. 61/992,774entitled “METHOD FOR MOVING AND ALIGNING 3D OBJECTS IN A PLANE WITHINTHE 2D ENVIRONMENT”, filed May 13, 2014, one or more of the embodimentsand disclosures in U.S. Provisional Patent Application No. 61/992,746entitled “METHOD FOR REPLACING 3D OBJECTS IN 2D ENVIRONMENT”, filed May13, 2014, and/or one or more of the embodiments and disclosures in U.S.Provisional Patent Application No. 61/992,665 entitled “METHOD FORINTERACTIVE CATALOG FOR 3D OBJECTS WITHIN THE 2D ENVIRONMENT”, filed May13, 2014. The entire contents of each provisional application referencedherein are hereby incorporated by reference for all purposes. Forexample, and not as a limitation, the embodiments herein may be combinedwith the elements and features disclosed in Provisional Application No.61/992,629, in combination with one or more of the elements and featuresdisclosed in Provisional Application No. 61/992,719, in combination withone or more of the elements and features disclosed in ProvisionalApplication No. 61/992,774, in combination with one or more of theelements and features disclosed in Provisional Application No.61/992,746, and/or in combination with one or more of the elements andfeatures disclosed in Provisional Application No. 61/992,665. Thesecombinations may include one or more features disclosed in one or moreof the referenced provisional applications, including combinations ofembodiments disclosed herein with features shown in one, two, three,four, or five of the provisional applications.

Further, the entire contents of each concurrently filed application,U.S. Non-Provisional patent application Ser. No. 14/710,554 entitled“METHOD FOR PROVIDING SCALE TO ALIGN 3D OBJECTS IN 2D ENVIRONMENT” filedMay 12, 2015, U.S. Non-Provisional patent application Ser. No.14/710,560 entitled “METHOD FOR PROVIDING A PROJECTION TO ALIGN 3DOBJECTS IN 2D ENVIRONMENT”, filed May 12, 2015, U.S. Non-Provisionalpatent application Ser. No. 14/710,561 entitled “METHOD FOR MOVING ANDALIGNING 3D OBJECTS IN A PLANE WITHIN THE 2D ENVIRONMENT”, filed May 12,2015, U.S. Non-Provisional patent application Ser. No. 14/710,565entitled “METHOD FOR REPLACING 3D OBJECTS IN 2D ENVIRONMENT”, filed May12, 2015, and/or U.S. Non-Provisional patent application Ser. No.14/710,569 entitled “METHOD FOR INTERACTIVE CATALOG FOR 3D OBJECTSWITHIN THE 2D ENVIRONMENT”, filed May 12, 2015, referenced herein arehereby incorporated by reference for all purposes.

The foregoing description is illustrative of particular embodiments ofthe invention, but is not meant to be a limitation upon the practicethereof.

The foregoing discussion should be understood as illustrative and shouldnot be considered limiting in any sense. While the inventions have beenparticularly shown and described with references to preferredembodiments thereof, it will be understood by those skilled in the artthat various changes in form and details may be made therein withoutdeparting from the spirit and scope of the inventions as defined by theclaims.

The corresponding structures, materials, acts and equivalents of allmeans or steps plus function elements in the claims below are intendedto include any structure, material or acts for performing the functionsin combination with other claimed elements as specifically claimed.

Finally, it will be understood that the articles, systems, and methodsdescribed hereinabove are embodiments of this disclosure—non-limitingexamples for which numerous variations and extensions are contemplatedas well. Accordingly, this disclosure includes all novel and non-obviouscombinations and sub-combinations of the articles, systems, and methodsdisclosed herein, as well as any and all equivalents thereof.

The invention claimed is:
 1. A method, comprising: receiving, at aprocessing device coupled to a display device, two-dimensionalenvironment data that corresponds to an image of a real environment;generating, by the processing device, three-dimensional environment databased on the two-dimensional environment data, the three-dimensionalenvironment data corresponding to a three-dimensional model of the realenvironment; determining, by the processing device, environmentalparameter data that corresponds to a first rule for placement ororientation of a real object in the real environment based on a featureof the real environment, the feature of the real environmentcorresponding to: a placement or orientation of other objects in thereal environment based on the two-dimensional environment data; apractical standard for usability of the real environment; an accessregulation established by a government or regulatory authority; or asafety standard established by the government or regulatory authority;determining, by the processing device, object parameter data thatcorresponds to a second rule for placement or orientation of the realobject in the real environment based on a feature of the real object,the feature of the real object corresponding to: a spatial standard thatexceeds a geometric dimension of the real object; or a proximitystandard for placement of the real object within a maximum proximity ofanother feature of the real environment; receiving, by the processingdevice, input data that corresponds to placement of a three-dimensionalobject in the three-dimensional environment, the three-dimensionalobject being a virtual rendering of the real object; and in response toreceiving the input data, displaying, by a display device coupled to theprocessing device, the three-dimensional environment with thethree-dimensional object, wherein the three-dimensional object isdisplayed in the three-dimensional environment according to theenvironment parameter data and the object parameter data.
 2. The methodof claim 1, wherein the feature of the real environment furthercorresponds to a minimum clearance around the other objects in the realenvironment.
 3. The method of claim 1, wherein the feature of the realenvironment further corresponds to maintaining a pathway for traversalof the real environment.
 4. The method of claim 1, wherein the featureof the real environment further corresponds to a retail merchandisingplan.
 5. The method of claim 1, further comprising: receiving, by theprocessing device, safety or regulation data, the safety or regulationdata received via manual input by a user or from a regulatory database,the safety or regulation data corresponding to: an access regulation; ora fire code; and determine the environmental parameter data based on thesafety or regulation data.
 6. The method of claim 1, further comprising:receiving, by the processing device, manufacturer data that correspondsto a manufacturer specification for the real object, the manufacturingdata received via manual input by a user or from a manufacturerdatabase; and determining the object parameter data based on themanufacturer data.
 7. The method of claim 1, wherein the other featurecorresponding to the proximity standard comprises: an electrical panel;or an air vent.
 8. A method, comprising: receiving, at a processingdevice coupled to a display device, two-dimensional environment datathat corresponds to an image of a real environment; generating, by theprocessing device, three-dimensional environment data based on thetwo-dimensional environment data, the three-dimensional environment datacorresponding to a three-dimensional model of the real environment;determining, by the processing device, environmental parameter data thatcorresponds to a first rule for placement or orientation of a realobject in the real environment based on a feature of the realenvironment other than an architectural feature of the real environment;determining, by the processing device, object parameter data thatcorresponds to a second rule for placement or orientation of the realobject in the real environment based on a feature of the real objectother than a geometric dimension of the real object; receiving, by theprocessing device, input data that corresponds to placement of athree-dimensional object in the three-dimensional environment, thethree-dimensional object being a virtual rendering of the real object;and in response to receiving the input data, displaying, by a displaydevice coupled to the processing device, the three-dimensionalenvironment with the three-dimensional object, wherein thethree-dimensional object is displayed in the three-dimensionalenvironment according to the environment parameter data and the objectparameter data.
 9. The method of claim 8, wherein the environmentalparameter data corresponds to: a placement or orientation of anotherobject in the real environment; and a minimum or maximum spacing in thereal environment between the real object and the other object, thespacing corresponding to a rule for traversal of the real environment.10. The method of claim 8, wherein the environmental parameter datacorresponds to a rule established by a government or regulatoryauthority.
 11. The method of claim 8, wherein the object parameter datacorresponds to a spatial standard for a minimum amount of clearancearound the real object.
 12. The method of claim 8, wherein the objectparameter data corresponds to a proximity standard for placement of thereal object within a maximum proximity of: an electrical panel; an airvent; or an architectural feature of the real environment.
 13. Themethod of claim 8, wherein the real environment is: an industrialenvironment and the environmental parameter data is based onoccupational safety and health regulations; a retail environment and theenvironmental parameter data is based on a merchandising plan for theretail environment; or a restaurant environment and the environmentalparameter data is based on a traversal plan for the restaurantenvironment.
 14. The method of claim 8, wherein the object parameterdata is based on an interaction between the real object and anotherobject in the real environment.
 15. A method, comprising: receiving, ata processing device, two-dimensional environment data that correspondsto a digital image of a real environment; generating, by the processingdevice, three-dimensional environment data based on the two-dimensionalenvironment data, the three-dimensional environment data correspondingto a three-dimensional model of the real environment; determining, bythe processing device, parameter data that corresponds to a parameterfor placing a three-dimensional object in a three-dimensionalenvironment defined by the three-dimensional environment data, whereinthe parameter defines a limitation on position or orientation of a realobject in the real environment, the three-dimensional object being avirtual model of a real object; receiving, by the processing device,input data that corresponds to placing a three-dimensional object in thethree-dimensional environment, the three-dimensional object being avirtual rendering of the real object; in response to receiving the inputdata, displaying, by a display device coupled to the processing device,the three-dimensional environment with the three-dimensional object,wherein the three-dimensional object is displayed in thethree-dimensional environment according to the parameter data; and inresponse to receiving the input data, altering, by the processing devicefor display by the display device, a brightness or a contrast of anelement of the three-dimensional environment, wherein altering thebrightness or the contrast is further in response to the input dataindicating a position of the three-dimensional object in thethree-dimensional environment: violates a rule associated with theparameter data for placement of the real object in the real environment;or is permissible under the rule associated with the parameter data forplacement of the real object in the real environment.
 16. The method ofclaim 15, wherein the parameter data is environmental parameter data orobject parameter data.
 17. The method of claim 16, wherein theenvironmental parameter data corresponds to: a rule established by agovernment or regulatory authority; or a layout for other objects in thereal environment.
 18. The method of claim 16, wherein the objectparameter data corresponds to: a minimum clearance around the realobject as established by a manufacturer or safety specification; or aminimum or maximum proximity for the real object to another object inthe real environment.
 19. The method of claim 15, further comprising, inresponse to receiving the input data, altering, by the processing devicefor display by the display device, a brightness or a contrast of thethree-dimensional object, wherein altering the brightness or thecontrast is further in response to the input data indicating a positionof the three-dimensional object in the three-dimensional environment:violates a rule associated with the parameter data for placement of thereal object in the real environment; or is permissible under the ruleassociated with the parameter data for placement of the real object inthe real environment.